/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.edu.ifal.alsuhaul.bd;

import br.edu.ifal.alsuhaul.modelo.Fornecedor;
import br.edu.ifal.alsuhaul.modelo.Funcionario;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Usuario
 */
public class FornecedorBD {

    public void insereFornecedor(Fornecedor f) throws SQLException {
        Connection fc = null;
        try {
            fc = new ConexaoAlsuhaul().abreConexao();
            String sql = "insert into Fornecedor"
                    + " (cnpj,nome_fantasia,email, tipo_Empresa,telefone, n_residencial, endereco, bairro, cidade,estado)"
                    + " values (?,?,?,?,?,?,?,?,?,?)";
            PreparedStatement stmt = fc.prepareStatement(sql);
            stmt.setString(1, f.getCnpj());
            stmt.setString(2, f.getNome());
            stmt.setString(3, f.getEmail());
            stmt.setString(4, f.getTipo_empresa());
            stmt.setString(5, f.getTelefone());
            stmt.setInt(6, f.getN_residencial());
            stmt.setString(7, f.getEndereco());
            stmt.setString(8, f.getBairro());
            stmt.setString(9, f.getCidade());
            stmt.setString(10, f.getEstado());


            stmt.execute();
            stmt.close();
            System.out.println("Gravado!");
            fc.close();

        } catch (SQLException ex) {
            Logger.getLogger(FornecedorBD.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            fc.close();


        }
    }

    public ArrayList<Fornecedor> buscarTodosFornecedores() throws SQLException {
        Connection c = new ConexaoAlsuhaul().abreConexao();

        String sql = "select * from Fornecedor";
        PreparedStatement stmt = c.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();

        ArrayList<Fornecedor> lista = new ArrayList<Fornecedor>();
        while (rs.next()) {
            Fornecedor c1 = new Fornecedor();
            c1.setCnpj(rs.getString("cnpj"));
            c1.setNome(rs.getString("nome_fantasia"));
            c1.setEmail(rs.getString("email"));
            c1.setTipo_empresa(rs.getString("tipo_Empresa"));
            c1.setN_residencial(rs.getInt("n_residencial"));
            c1.setTelefone(rs.getString("telefone"));
            c1.setEndereco(rs.getString("endereco"));
            c1.setBairro(rs.getString("bairro"));
            c1.setCidade(rs.getString("cidade"));
            c1.setEstado(rs.getString("estado"));

            lista.add(c1);
        }
        rs.close();
        stmt.close();
        c.close();

        return lista;

    }

    public Fornecedor buscaPeloCnpj(String cnpj) throws SQLException {
        Connection fc = null;
        fc = new ConexaoAlsuhaul().abreConexao();
        String sql = "select* from Fornecedor where cnpj = ?";
        PreparedStatement stmt = fc.prepareStatement(sql);
        stmt.setString(1, cnpj);
        ResultSet rs = stmt.executeQuery();//usa por que tem retorno
        Fornecedor c1 = new Fornecedor();//cria objeto funcionário
        while (rs.next()) {
            c1.setNome(rs.getString("nome_fantasia"));
            c1.setEmail(rs.getString("email"));
            c1.setTipo_empresa(rs.getString("tipo_Empresa"));
            c1.setN_residencial(rs.getInt("n_residencial"));
            c1.setTelefone(rs.getString("telefone"));
            c1.setEndereco(rs.getString("endereco"));
            c1.setBairro(rs.getString("bairro"));
            c1.setCidade(rs.getString("cidade"));
            c1.setEstado(rs.getString("estado"));


        }
        rs.close();
        stmt.close();
        fc.close();//fechando conexão


        return c1;

    }

    public void atualizaFornecedor(Fornecedor f1) throws SQLException {
        Connection conn = new ConexaoAlsuhaul().abreConexao();
        String sql = "update Fornecedor set nome_fantasia=?,"
                + "email=?, tipo_Empresa=?,telefone=?,"
                + " n_residencial=?, endereco=?, bairro=?,"
                + " cidade=?,estado=? where cnpj=?";
        PreparedStatement st = conn.prepareStatement(sql);

        st.setString(1, f1.getNome());
        st.setString(2, f1.getEmail());
        st.setString(3, f1.getTipo_empresa());
        st.setString(4, f1.getTelefone());
        st.setInt(5, f1.getN_residencial());
        st.setString(6, f1.getEndereco());
        st.setString(7, f1.getBairro());
        st.setString(8, f1.getCidade());
        st.setString(9, f1.getEstado());
        st.setString(10, f1.getCnpj());
        st.execute();
        st.close();

    }

    public void removeFornecedor(Fornecedor ff) throws SQLException {
        ConexaoAlsuhaul fc = new ConexaoAlsuhaul();
        Connection conn = fc.abreConexao();
        String sql = "delete from Fornecedor where cnpj=?";//executa comando do
        PreparedStatement stmt = conn.prepareStatement(sql);
        stmt.setString(1, ff.getCnpj());
        stmt.execute();
        stmt.close();
        conn.close();
    }
}
